// axios的二次封装
import axios from 'axios'

const request = axios.create({
    baseURL: 'https://b.app.yukevip.club/pro/api/',
    timeout: 10000,
    headers: {
        'Content-Type': 'application/json',
    },
    method: 'POST',
})

// ### 请求拦截器：在请求发送前运行，可以用来修改请求配置
request.interceptors.request.use(
    (config) => {
        const token = localStorage.getItem('token')
        if (token) {
            config.headers['Authorization'] = `Bearer ${token}`
        }
       
        return config
    },
    (error) => {
        console.error('请求错误:', error)
        return Promise.reject(error)
    }
)

// ### 响应拦截器：在收到服务器响应后运行，可以用来统一处理响应数据和错误
request.interceptors.response.use(
    (response) => {
        const { data } = response
        if (response.status !== 200) {
            console.error(`网络错误: 状态码 ${response.status}`, data)
            return Promise.reject(new Error(`服务器响应错误，状态码 ${response.status}`))
        }
        if (data && data.errCode !== 0) {
            console.error('业务逻辑错误:', data.errMsg || '发生未知错误。')
            return Promise.reject(data)
        }
        return data.data || data || {}
    },
    (error) => {
        console.error('请求失败:', error.message)
        return Promise.reject(error)
    }
)
export default request